#pragma once

#include <Windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include "Interface.h"
#include "RulesProcessingUserMode.h"

bool CreateFolder(const wchar_t *str);
bool FindFile(const wchar_t *str);
bool WriteFolderToRules(const wchar_t *str);
bool ReloadRules(void);

class CMultiSZObserver: public IMultiSZObserver
{
public:
    CMultiSZObserver()
    {
    }

    void OnMultiSZItemFound(const std::wstring& wsMultiSZItem)
    {
        if(wsMultiSZItem != L"")
        {
            vectWStr.push_back(wsMultiSZItem);
        }  
    }

    void ClearVector()
    {
        vectWStr.clear();
    }

    void DeleteEmptyStrings(void)
    {
        int vectSize = vectWStr.size();
        int i = 0;

        while (i < vectSize)
        {
            std::vector<std::wstring>::iterator pos = vectWStr.begin()+i;

            if(pos->at(0) == L'\0')
            {
                vectWStr.erase(pos);
                vectSize--;
                vectWStr.resize(vectSize);
            }
            else
            {
                ++i;
            }
        }
    }

    const std::vector<std::wstring>& GetVector()
    {
        return vectWStr;
    }

private:
    CMultiSZObserver(const CMultiSZObserver&);
    CMultiSZObserver& operator =(const CMultiSZObserver&);

    std::vector<std::wstring> vectWStr;

};